package com.example.im.constant;

/**
 * 常量定义
 */
public interface Constant {

	/**
	 * 系统编码
	 */
	interface SysCode {

		/**
		 * IM系统
		 */
		String MY_IM = "MY_IM";
	}
	

	/**
	 * 连接参数key
	 *
	 */
	interface CONN_PARAM {
		/**
		 * 连接凭证
		 */
		String TOKEN = "token";
		
		/**
		 * 连接用户名
		 */
		String USERNAME = "userName";
		
		/**
		 * 连接用户的类型，C：客户，CS：客服
		 */
		String CLIENT_TYPE = "clientType";
		
	}
	
	/**
	 * 连接用户的类型
	 */
	interface CLIENT_TYPE {
		/**
		 * 客户
		 */
		String CUSTOMER = "C";
		
		/**
		 * 客服
		 */
		String CUSTOMER_SERVICE = "CS";
		
	}
	
	/**
	 * 客户端状态，目前只针对客户类型客户端，S0I:初始，S0W：待接入，S0P：已接入
	 */
	interface CustomerStatus {
		
		/**
		 * 初始
		 */
		static String INIT = "S0I";
		
		/**
		 * 待接入
		 */
		static String WAITING = "S0W";
		
		/**
		 * 已接入
		 */
		static String PROCCESSING = "S0P";
	}
	
	/**
	 * 消息状态
	 *
	 */
	interface MsgStatus {
		/**
		 * 未读
		 */
		String UNREAD = "S0R";
		/**
		 * 已读
		 */
		String READ = "S1R";
		/**
		 * 失败
		 */
		String FAILURE = "S1F";
	}
	
	/**
	 *  消息类型
	 *  text：文字（包括表情），image：图片，voice：音频，video：视频，file：文件，location：位置，goods：商品
	 *
	 */
	interface MsgType {
		/**
		 * 文字（包括表情）
		 */
		String TEXT = "text";
		/**
		 * 图片
		 */
		String IMAGE = "image";
		/**
		 * 音频
		 */
		String VOICE = "voice";
		/**
		 * 视频
		 */
		String VIDEO = "video";
		/**
		 * 文件
		 */
		String FILE = "file";
		/**
		 * 位置
		 */
		String LOCATION = "location";
		/**
		 * 商品
		 */
		String GOODS = "goods";
	}
	
	/**
	 * 操作类型
	 *
	 */
	interface OperateType {
		/**
		 * 对话
		 */
		String DIALOGUE = "dialogue";
		/**
		 * 客户排队
		 */
		String CUSTOMER_QUEUE = "customer_queue";
		/**
		 * 接入客户
		 */
		String JOIN_CUSTOMER = "join_customer";
		/**
		 * 断开接入
		 */
		String DISCONNECT_JOIN = "disconnect_join";
	}
	
	/**
	 * 事件
	 *
	 */
	interface EVENT {
		/**
		 * 对话
		 */
		String DIALOGUE = "dialogue";
		/**
		 * 系统
		 */
		String SYSTEM = "system";
		/**
		 * 客户动态
		 */
		String CUSTOMER_CHANGE = "customer_change";
		/**
		 * 关闭窗口
		 */
		String CLOSE_WINDOWS = "close_windows";
	}

	
	interface CacheExpire {
		/**
		 * 10秒钟过期.
		 */
		String SECONDS_10 = "SECONDS_10";
		/**
		 * 30秒钟过期.
		 */
		String SECONDS_30 = "SECONDS_30";
		/**
		 * 60秒钟过期.
		 */
		String SECONDS_60 = "SECONDS_60";
		/**
		 * 10分钟过期.
		 */
		String MINUTES_10 = "SECONDS_10";
		/**
		 * 30分钟过期.
		 */
		String MINUTES_30 = "MINUTES_30";
		/**
		 * 60分钟过期.
		 */
		String MINUTES_60 = "MINUTES_60";
		/**
		 * 2小时过期.
		 */
		String HOURS_2 = "HOURS_2";
		/**
		 * 4小时过期.
		 */
		String HOURS_4 = "HOURS_4";
		/**
		 * 8小时过期.
		 */
		String HOURS_8 = "HOURS_8";
		/**
		 * 12小时过期.
		 */
		String HOURS_12 = "HOURS_12";
		/**
		 * 1天过期.
		 */
		String DAY = "DAY";
		/**
		 * 1周过期
		 */
		String WEEK = "WEEK";
		/**
		 * 不过期.
		 */
		String NONE = "NONE";
	}
	
	interface CacheKey {
		/**
		 * SocketIO服务端与IP的映射关系
		 */
		String SOCKETIO_SERVER_MAPPER = SysCode.MY_IM + ":SocketIOServerMapper";
	}
	

}
